<?php
	namespace User\Api;
	define('UC_CLIENT_PATH', dirname(dirname(__FILE__)));
		//载入配置文件
	require_cache(UC_CLIENT_PATH . '/Conf/config.php');

	//载入函数库文件
	require_cache(UC_CLIENT_PATH . '/Common/common.php');
	/**
	 * UC API调用控制器层
	 * 调用方法 A('Uc/User', 'Api')->login($username, $password, $type);
	 */
	abstract class Api{
		/*
		* API调用模型实例
		*/
			protected $model;

		/**
		 * 构造方法，检测相关配置
		 */
		public function __construct(){
			//相关配置检测
			defined('UC_APP_ID') || throw_exception('UC配置错误：缺少UC_APP_ID');
			defined('UC_API_TYPE') || throw_exception('UC配置错误：缺少UC_APP_API_TYPE');
			defined('UC_AUTH_KEY') || throw_exception('UC配置错误：缺少UC_APP_AUTH_KEY');
			defined('UC_DB_DSN') || throw_exception('UC配置错误：缺少UC_DB_DSN');
			defined('UC_TABLE_PREFIX') || throw_exception('UC配置错误：缺少UC_TABLE_PREFIX');
			if(UC_API_TYPE != 'Model' && UC_API_TYPE != 'Service'){
				throw_exception('UC配置错误：UC_API_TYPE只能为 Model 或 Service');
			}
			if(UC_API_TYPE == 'Service' && UC_AUTH_KEY == ''){
				throw_exception('UC配置错误：Service方式调用Api时UC_AUTH_KEY不能为空');
			}
			if(UC_API_TYPE == 'Model' && UC_DB_DSN == ''){
				throw_exception('UC配置错误：Model方式调用Api时UC_DB_DSN不能为空');
			}

			$this->_init();
		}

		/**
		 * 抽象方法，用于设置模型实例
		 */
		abstract protected function _init();
		}
?>
